/**
 * 
 */
package com.kingpigeon.iotsvrdemo;

import io.netty.channel.ChannelHandlerContext;

/**
 * @author xuhw
 *
 */
public class RTUCMD80UP {
	private ChannelHandlerContext ctx ;
	private byte[] data;
	public RTUCMD80UP(ChannelHandlerContext ctx, byte[] data)
	{
		this.ctx = ctx;
		this.data = data;
	}
	public void RTUCMD80UPHandler()
	{
		/**
		0x80（上行）返回报文数据包内容
		字段名	长度（Byte)	数据类型	说明
		设备ID	15	ASCII码	具体ASCII码的解析算法参考<8.4.ASCII码类型字段解包/组包样例代码>
		随机数	4	整型	四个整型随机数，RTU根据下行报文四个随机数计算得出。服务器可对此进行校验，若不正确或3次超时，可主动断开与设备的连接。具体计算方式参考<8.6.RTU随机数运算函数>
		主型号	10	ASCII码	
		副型号	2	ASCII码	
		固件版本号	6	ASCII码	
		*/
    	String sMac = KingPigeonUtils.bytesToAscii(data,8,15);
    	System.out.println("sMac:"+sMac);

    	int iRandom1 = KingPigeonUtils.byteToIntLe(data[23]);
    	System.out.println("iRandom1:"+iRandom1);
    	int iRandom2 = KingPigeonUtils.byteToIntLe(data[24]);
    	System.out.println("iRandom2:"+iRandom2);
    	int iRandom3 = KingPigeonUtils.byteToIntLe(data[25]);
    	System.out.println("iRandom3:"+iRandom3);
    	int iRandom4 = KingPigeonUtils.byteToIntLe(data[26]);
    	System.out.println("iRandom4:"+iRandom4);
    	//若检验失败，此处可直接断开该RTU请求。
    	//If the Check fails, the RTU request can be disconnected directly.
    	
    	String sRTUType = KingPigeonUtils.bytesToAscii(data,27,10);
    	System.out.println("sRTUType:"+sRTUType);
    	String sRTUSubType = KingPigeonUtils.bytesToAscii(data,37,2);
    	System.out.println("sRTUSubType:"+sRTUSubType);
    	String sVer = KingPigeonUtils.bytesToAscii(data,39,6);
    	System.out.println("sVer:"+sVer);

	}
}
